﻿namespace BlogsAPI
{
    using System;

    /// <summary>
    /// Аттрибут для проставления у классов отвечающих за блогохостинги
    /// </summary>
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
    public class BlogServiceAPI : Attribute
    {
        /// <summary>
        /// Описание сервиса
        /// </summary>
        public String Description { get; set; }

        /// <summary>
        /// Ссылка на сервис
        /// </summary>
        public String Link { get; set; }

        /// <summary>
        /// Является ли сервис - сервисом микроблогов
        /// </summary>
        public Boolean IsMicroblog { get; set; }
    }

    /// <summary>
    /// Аттрибут для проставления у классов отвечающих за отдельные блоги
    /// </summary>
    /// <remarks>AllowMultiple = true - означает, что один класс может отвечать нескольким физицеским объектам</remarks>
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
    public class SingleBlog : Attribute
    {
        /// <summary>
        /// Ссылка на блог
        /// </summary>
        public String HostName { get; set; }
    }

    /// <summary>
    /// Аттрибут для проставления у классов отвечающих за отдельные системы сокращения ссылок
    /// </summary>
    /// <remarks>AllowMultiple = true - означает, что один класс может отвечать нескольким физическим объектам</remarks>
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
    public class SingleShortener : Attribute
    {
        /// <summary>
        /// Ссылка на систему
        /// </summary>
        /// <example>http://bit.ly</example>
        public String Link { get; set; }
    }

    /// <summary>
    /// Аттрибут для проставления у классов отвечающих за хранение фотографий
    /// </summary>
    /// <remarks>AllowMultiple = true - означает, что один класс может отвечать нескольким физическим объектам</remarks>
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
    public class SingleImager : Attribute
    {
        /// <summary>
        /// Ссылка на систему
        /// </summary>
        /// <example>http://instagr.am</example>
        public String Link { get; set; }
    }
}
